/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gcs.persistencia;

import gcs.modelo.Categoria;
import gcs.modelo.ParticipanteCampeonato;
import gcs.modelo.ParticipanteCategoria;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Rafe
 */
public abstract class GestorParticipantesCategoria {
    public static void guardar(ParticipanteCategoria pc) throws Exception{
    
        String sentencia;
        //@TODO Falta afegir la puntuació
        sentencia = "INSERT INTO Partic_Categ(ID_Campeonato, ID_Categoria, DNI) VALUES ('HdM'," + pc.cat.id + ",'" + pc.pcamp.identificador + "')";
    
        GestorBD.ejecutarActualizacion(sentencia);
    }
    
    public static List<ParticipanteCategoria> recuperar(Categoria categoria) throws Exception {
        List<ParticipanteCategoria> list = new ArrayList<ParticipanteCategoria>();
        //@TODO Falta afegir la puntuació
        String consulta = "SELECT dni FROM partic_categ WHERE id_campeonato='HdM' AND id_categoria="+categoria.id;
        Statement stmt = GestorBD.getConnection().createStatement();
        ResultSet rs = stmt.executeQuery(consulta);
        while(rs.next()){
            String idParticipante = rs.getString(1);
            ParticipanteCampeonato pcamp = new ParticipanteCampeonato();
            pcamp.identificador = idParticipante;
            if(!categoria.campeonato.participantesCampeonato.contains(pcamp)){
                throw new Exception("No existe el participante con id="+idParticipante);
            }else{
                int indice = categoria.campeonato.participantesCampeonato.indexOf(pcamp);
                pcamp = categoria.campeonato.participantesCampeonato.get(indice);
                ParticipanteCategoria pcat = new ParticipanteCategoria(pcamp, categoria);
                list.add(pcat);
            }
        }
        rs.close();
        stmt.close();
        return list;
    }
    
}
